Author

Tony Duan

1 R version

Code
version
               _                           
platform       aarch64-apple-darwin20      
arch           aarch64                     
os             darwin20                    
system         aarch64, darwin20           
status                                     
major          4                           
minor          4.1                         
year           2024                        
month          06                          
day            14                          
svn rev        86737                       
language       R                           
version.string R version 4.4.1 (2024-06-14)
nickname       Race for Your Life          

2 work with file

2.1 get current directory

Code
getwd()

2.2 get all file name under current directory

Code
list.files()
 [1] "1 basic R_files"               "1 basic R.qmd"                
 [3] "1 basic R.rmarkdown"           "1-basic-R.rmarkdown"          
 [5] "2 probability.qmd"             "3 Statistics.qmd"             
 [7] "5 R boook.qmd"                 "6 data analytic in R book.qmd"
 [9] "7 error handling.qmd"          "hotels.csv"                   
[11] "images"                        "renv"                         

2.3 get all file name under currrents parent directory

Code
list.files("../")
 [1] "_freeze"               "_publish.yml"          "_quarto.yml"          
 [4] "_site"                 "data manipulation"     "docs"                 
 [7] "foldableCodeBlcok.lua" "images"                "index.qmd"            
[10] "intro"                 "Intro R.Rproj"         "LICENSE"              
[13] "other"                 "Plot"                  "Publish"              
[16] "README.md"             "Rlogo.png"             "sidebar.png"          
[19] "styles.css"           

2.4 get file info

Code
file.info("6 data analytic in R book.qmd")

2.5 create folder

Code
dir.create('testing_folder')

2.6 delete folder/file

Code
file.remove('testing_folder')

2.7 copy file

Code
library(fs)
file_copy('test.csv', 'test2.csv')

2.8 download file from internet

Code
url="https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-02-11/hotels.csv"

download.file(url = url, destfile = "hotels.csv")

2.9 download table from internet

Code
library(tidyverse)
library(rvest)
library(janitor)

nba_wiki_url='https://en.wikipedia.org/wiki/List_of_NBA_champions'
  
nba_wiki_data001=nba_wiki_url %>% read_html() %>% html_table()

nba_wiki_data002=nba_wiki_data001[[2]] %>% clean_names()

nba_wiki_data003=nba_wiki_data002 %>%filter(!row_number() %in% c(1, 5)) %>% mutate(year=str_sub(year, 1, 4))

tail(nba_wiki_data003)
# A tibble: 6 × 8
  year  western_champion      coach result eastern_champion coach_2 finals_mvp_a
  <chr> <chr>                 <chr> <chr>  <chr>            <chr>   <chr>       
1 2019  Golden State Warrior… Stev… 2–4    Toronto Raptors… Nick N… Kawhi Leona…
2 2020  Los Angeles Lakers (… Fran… 4–2    Miami Heat (5) … Erik S… LeBron James
3 2021  Phoenix Suns (2) (3,… Mont… 2–4    Milwaukee Bucks… Mike B… Giannis Ant…
4 2022  Golden State Warrior… Stev… 4–2    Boston Celtics … Ime Ud… Stephen Cur…
5 2023  Denver Nuggets (1) (… Mich… 4–1    Miami Heat (8) … Erik S… Nikola Jokić
6 2024  Dallas Mavericks (5)… Jaso… 1–4    Boston Celtics … Joe Ma… Jaylen Brown
# ℹ 1 more variable:
#   mw_parser_output_tooltip_dotted_border_bottom_1px_dotted_cursor_help_ref <chr>

3 handle error

using tryCatch to continues the code chunk.

Code
tryCatch({
  1+who
},error=function(e){
  message(paste0('Here is some error:',e))
})

print('end of the code chunk')
[1] "end of the code chunk"

4 Condition with if/elif/else

Code
x <- -5
if(x > 10){
print("Non-negative number and better than 10")
} else if (x > 0) {
  print("Non-negative number and better than 0")
} else {
print("Negative number")
}
[1] "Negative number"

5 Loop

5.1 for Loop

Code
for (x in 1:4) {
  print(x)
}
[1] 1
[1] 2
[1] 3
[1] 4

with break statement

Code
for (x in 1:6) {
  if (x == 4) {break}
  print(x)
}
[1] 1
[1] 2
[1] 3

with next statement

Code
for (x in 1:6) {
  if (x == 4) {next}
  print(x)
}
[1] 1
[1] 2
[1] 3
[1] 5
[1] 6

5.2 using map() funcation for loop

The map functions transform their input by applying a function to each element and returning a vector the same length as the input.

Code
library(tidyverse)
Code
map(
  1:3, 
    \(x) x+2
  )
[[1]]
[1] 3

[[2]]
[1] 4

[[3]]
[1] 5

return number vector

Code
map_dbl(
  1:3, 
    \(x) x+2
  )
[1] 3 4 5

return char vector

Code
map_chr(
  1:3, 
    \(x) x+2
  )
[1] "3.000000" "4.000000" "5.000000"

5.3 Error handling on for Loop:print out error

Code
stuff <- list(12, 9, 2, "cat", 25, 10, "bird")
#stuff
Code
loop_num=0

for (i in 1:6) {
  loop_num=loop_num+1
  tryCatch (print(1+i),
           
           error = function(e){
           message(paste("An error occurred for loop num", loop_num,":\n"), e)
             
         })
}
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7

5.4 while Loop

Code
i <- 1
while (i < 6) {
  print(i)
  i <- i + 1
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

with break statement

Code
i <- 1
while (i < 6) {
  print(i)
  i <- i + 1
  if (i == 4) {break}
}
[1] 1
[1] 2
[1] 3

with next statement

Code
i =1

while (i < 6) {
  i <- i + 1
  if (i == 4){next}
  print(i)
}
[1] 2
[1] 3
[1] 5
[1] 6

5.5 Error handling on whie Loop: try when the error gone

Code
i=0
a=0
while (i < 4) {
  a=a+1
  print(i)
  tryCatch({
  asdfgaergae5gh5hae5h
    i=i+1
  },error = function(msg){print('eeeeeeee')
    i=i-1
    print(paste0("new i : ",i))
   
    })
   if(a>10){break}
  }
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"
[1] 0
[1] "eeeeeeee"
[1] "new i : -1"

6 function

6.1 without Arguments

Code
my_function <- function() { 
  print("Hello World!")
}

my_function()
[1] "Hello World!"

6.2 with Arguments

Code
adding_ten <- function(x) { 
  a=x+10
  return(a)
}

adding_ten(5)
[1] 15

6.3 with default Arguments

Code
adding_ten <- function(x=10) { 
  a=x+10
  return(a)
}

#if not define x, then x=10

adding_ten()
[1] 20

6.4 check function Arguments

Code
args(adding_ten)
function (x = 10) 
NULL

Many functions exhibit variadic behavior. That is, they can accept any num- ber of arguments, and it’s up to the user to decide how many arguments to provide. The functions c, data.frame, and list are all like this. When you call a function like data.frame, you can specify any number of members as arguments.

Code
args(data.frame)
function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, 
    fix.empty.names = TRUE, stringsAsFactors = FALSE) 
NULL

6.5 warning in function

print out warning

Code
adding_ten <- function(x=10) { 
  a=x+10
  if(a>50){
    warning('its better than 50')
  }
  return(a)
}
Code
adding_ten(100)
[1] 110

6.6 stop in function

print out stop error message

Code
adding_ten <- function(x=10) { 
  a=x+10
  if(a>50){
    stop('its better than 50')
  }
  return(a)
}
Code
adding_ten(100)

6.7 use try to by pass error

Code
try(adding_ten(100))
[1] 110
Code
5+10
[1] 15

7 program running time

Code
start_time=Sys.time()

v=matrix(1:100000000)
c=v*v

end_time=Sys.time()
Code
start_time
[1] "2025-04-14 14:19:09 +07"
Code
end_time
[1] "2025-04-14 14:19:10 +07"
Code
end_time-start_time
Time difference of 0.5193379 secs

8 Package

8.1 install R package

8.1.1 install from Cran

99% of the time will install pacakge from The Comprehensive R Archive Network(cran).https://cran.r-project.org/

Code
install.packages('dplyr',repos = "http://cran.us.r-project.org")

8.1.2 install old version from Cran

Code
require(remotes)
install_version("plotly", version = "4.10.2")

8.1.3 install from Github

Code
pak::pkg_install("tidymodels/learntidymodels")

8.1.4 install from .tar.gz

Code
install.packages("https://cran.r-project.org/src/contrib/Archive/maptools/maptools_1.1-8.tar.gz")

8.1.5 install from Bioconductor

Code
pak::pkg_install("text2vec")

8.1.6 install from local

Code
pak::local_install("cli")

8.2 check one package version

Code
packageVersion("tidyverse")
[1] '2.0.0'

8.3 check pacakge relationship

Code
pak::pkg_deps_explain("tibble", "rlang")
tibble -> lifecycle -> rlang
tibble -> pillar -> lifecycle -> rlang
tibble -> pillar -> rlang
tibble -> pillar -> vctrs -> lifecycle -> rlang
tibble -> pillar -> vctrs -> rlang
tibble -> rlang
tibble -> vctrs -> lifecycle -> rlang
tibble -> vctrs -> rlang

8.4 check pacakge dependencies

Code
pak::pkg_deps_tree("tibble")
tibble 3.2.1 ✨🔧
├─fansi 1.0.6 ✨🔧 ⬇ (383.06 kB)
├─lifecycle 1.0.4 ✨ ⬇ (124.78 kB)
│ ├─cli 3.6.4 ✨🔧 ⬇ (1.45 MB)
│ ├─glue 1.8.0 ✨🔧 ⬇ (173.70 kB)
│ └─rlang 1.1.6 ✨🔧 ⬇ (1.89 MB)
├─magrittr 2.0.3 ✨🔧 ⬇ (233.52 kB)
├─pillar 1.10.2 ✨ ⬇ (657.78 kB)
│ ├─cli
│ ├─glue
│ ├─lifecycle
│ ├─rlang
│ ├─utf8 1.2.4 ✨🔧 ⬇ (206.91 kB)
│ └─vctrs 0.6.5 ✨🔧 ⬇ (1.89 MB)
│   ├─cli
│   ├─glue
│   ├─lifecycle
│   └─rlang
├─pkgconfig 2.0.3 ✨ ⬇ (18.45 kB)
├─rlang
└─vctrs

Key:  ✨ new |  ⬇ download | 🔧 compile

8.5 check all installed package

Code
library(gt)
ip = as.data.frame(installed.packages()[,c(1,3:4)])
ip = ip[is.na(ip$Priority),1:2,drop=FALSE]
ip |> gt() |> opt_interactive()

8.6 check current loaded package

Code
library(dplyr)
installed_pacakge = as.data.frame(installed.packages()[,c(1,3:4)])
installed_pacakge = installed_pacakge[is.na(installed_pacakge$Priority),1:2,drop=FALSE]
installed_pacakge |> filter(Package %in% (.packages()))|> gt() |> opt_interactive()

8.7 list all packages on cran

Code
cran_pacakge_num=available.packages(repos = "http://cran.us.r-project.org") |> as.data.frame()

As 2025-04-14 ,there are total library 22301 on cran

Code
cran_pacakge_num|> gt() |> opt_interactive()

8.8 check local installed old package compare with cran

Code
old.packages(repos = "http://cran.us.r-project.org")
             Package       
arrow        "arrow"       
AsioHeaders  "AsioHeaders" 
bigD         "bigD"        
blastula     "blastula"    
broom        "broom"       
cards        "cards"       
cluster      "cluster"     
commonmark   "commonmark"  
doBy         "doBy"        
duckdb       "duckdb"      
foreign      "foreign"     
fs           "fs"          
future       "future"      
gdtools      "gdtools"     
gemini.R     "gemini.R"    
gert         "gert"        
ggmap        "ggmap"       
ggplot2      "ggplot2"     
httr2        "httr2"       
jpeg         "jpeg"        
knitr        "knitr"       
later        "later"       
lattice      "lattice"     
lme4         "lme4"        
magick       "magick"      
markdown     "markdown"    
Matrix       "Matrix"      
MatrixModels "MatrixModels"
mgcv         "mgcv"        
nlme         "nlme"        
nloptr       "nloptr"      
pak          "pak"         
parallelly   "parallelly"  
pillar       "pillar"      
pkgbuild     "pkgbuild"    
ps           "ps"          
qpdf         "qpdf"        
quantmod     "quantmod"    
quantreg     "quantreg"    
ragg         "ragg"        
raster       "raster"      
RcppTOML     "RcppTOML"    
RCurl        "RCurl"       
Rdpack       "Rdpack"      
readxl       "readxl"      
renv         "renv"        
rlang        "rlang"       
sass         "sass"        
sf           "sf"          
stringi      "stringi"     
summarytools "summarytools"
systemfonts  "systemfonts" 
terra        "terra"       
tesseract    "tesseract"   
textutils    "textutils"   
tidygeocoder "tidygeocoder"
tzdb         "tzdb"        
units        "units"       
V8           "V8"          
websocket    "websocket"   
writexl      "writexl"     
xfun         "xfun"        
zoo          "zoo"         
             LibPath                                                               
arrow        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
AsioHeaders  "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
bigD         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
blastula     "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
broom        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
cards        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
cluster      "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
commonmark   "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
doBy         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
duckdb       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
foreign      "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
fs           "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
future       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
gdtools      "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
gemini.R     "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
gert         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
ggmap        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
ggplot2      "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
httr2        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
jpeg         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
knitr        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
later        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
lattice      "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
lme4         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
magick       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
markdown     "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
Matrix       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
MatrixModels "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
mgcv         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
nlme         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
nloptr       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
pak          "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
parallelly   "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
pillar       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
pkgbuild     "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
ps           "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
qpdf         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
quantmod     "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
quantreg     "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
ragg         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
raster       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
RcppTOML     "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
RCurl        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
Rdpack       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
readxl       "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
renv         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
rlang        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
sass         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
sf           "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
stringi      "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
summarytools "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
systemfonts  "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
terra        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
tesseract    "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
textutils    "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
tidygeocoder "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
tzdb         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
units        "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
V8           "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
websocket    "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
writexl      "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
xfun         "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
zoo          "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"
             Installed   Built   ReposVer   
arrow        "19.0.1"    "4.4.1" "19.0.1.1" 
AsioHeaders  "1.22.1-2"  "4.4.1" "1.28.2-1" 
bigD         "0.3.0"     "4.4.1" "0.3.1"    
blastula     "0.3.5"     "4.4.0" "0.3.6"    
broom        "1.0.7"     "4.4.1" "1.0.8"    
cards        "0.5.1"     "4.4.1" "0.6.0"    
cluster      "2.1.8"     "4.4.1" "2.1.8.1"  
commonmark   "1.9.2"     "4.4.1" "1.9.5"    
doBy         "4.6.25"    "4.4.1" "4.6.26"   
duckdb       "1.2.0"     "4.4.1" "1.2.1"    
foreign      "0.8-88"    "4.4.1" "0.8-90"   
fs           "1.6.5"     "4.4.1" "1.6.6"    
future       "1.34.0"    "4.4.0" "1.40.0"   
gdtools      "0.4.1"     "4.4.1" "0.4.2"    
gemini.R     "0.8.0"     "4.4.1" "0.12.0"   
gert         "2.1.4"     "4.4.1" "2.1.5"    
ggmap        "4.0.0"     "4.4.0" "4.0.1"    
ggplot2      "3.5.1"     "4.4.0" "3.5.2"    
httr2        "1.1.1"     "4.4.1" "1.1.2"    
jpeg         "0.1-10"    "4.4.0" "0.1-11"   
knitr        "1.49"      "4.4.1" "1.50"     
later        "1.4.1"     "4.4.1" "1.4.2"    
lattice      "0.22-6"    "4.4.1" "0.22-7"   
lme4         "1.1-36"    "4.4.1" "1.1-37"   
magick       "2.8.5"     "4.4.1" "2.8.6"    
markdown     "1.13"      "4.4.0" "2.0"      
Matrix       "1.7-2"     "4.4.1" "1.7-3"    
MatrixModels "0.5-3"     "4.4.0" "0.5-4"    
mgcv         "1.9-1"     "4.4.1" "1.9-3"    
nlme         "3.1-167"   "4.4.1" "3.1-168"  
nloptr       "2.1.1"     "4.4.0" "2.2.1"    
pak          "0.8.0.1"   "4.4.1" "0.8.0.2"  
parallelly   "1.42.0"    "4.4.1" "1.43.0"   
pillar       "1.10.1"    "4.4.1" "1.10.2"   
pkgbuild     "1.4.6"     "4.4.1" "1.4.7"    
ps           "1.9.0"     "4.4.1" "1.9.1"    
qpdf         "1.3.4"     "4.4.1" "1.3.5"    
quantmod     "0.4.26"    "4.4.0" "0.4.27"   
quantreg     "6.00"      "4.4.1" "6.1"      
ragg         "1.3.3"     "4.4.1" "1.4.0"    
raster       "3.6-31"    "4.4.1" "3.6-32"   
RcppTOML     "0.2.2"     "4.4.0" "0.2.3"    
RCurl        "1.98-1.16" "4.4.0" "1.98-1.17"
Rdpack       "2.6.2"     "4.4.1" "2.6.4"    
readxl       "1.4.4"     "4.4.1" "1.4.5"    
renv         "1.1.2"     "4.4.1" "1.1.4"    
rlang        "1.1.5"     "4.4.1" "1.1.6"    
sass         "0.4.9"     "4.4.0" "0.4.10"   
sf           "1.0-19"    "4.4.1" "1.0-20"   
stringi      "1.8.4"     "4.4.0" "1.8.7"    
summarytools "1.1.1"     "4.4.1" "1.1.3"    
systemfonts  "1.2.1"     "4.4.1" "1.2.2"    
terra        "1.8-29"    "4.4.1" "1.8-42"   
tesseract    "5.2.2"     "4.4.1" "5.2.3"    
textutils    "0.4-1"     "4.4.0" "0.4-2"    
tidygeocoder "1.0.5"     "4.4.0" "1.0.6"    
tzdb         "0.4.0"     "4.4.0" "0.5.0"    
units        "0.8-5"     "4.4.0" "0.8-7"    
V8           "6.0.1"     "4.4.1" "6.0.3"    
websocket    "1.4.2"     "4.4.1" "1.4.4"    
writexl      "1.5.1"     "4.4.1" "1.5.3"    
xfun         "0.51"      "4.4.1" "0.52"     
zoo          "1.8-13"    "4.4.1" "1.8-14"   
             Repository                                
arrow        "http://cran.us.r-project.org/src/contrib"
AsioHeaders  "http://cran.us.r-project.org/src/contrib"
bigD         "http://cran.us.r-project.org/src/contrib"
blastula     "http://cran.us.r-project.org/src/contrib"
broom        "http://cran.us.r-project.org/src/contrib"
cards        "http://cran.us.r-project.org/src/contrib"
cluster      "http://cran.us.r-project.org/src/contrib"
commonmark   "http://cran.us.r-project.org/src/contrib"
doBy         "http://cran.us.r-project.org/src/contrib"
duckdb       "http://cran.us.r-project.org/src/contrib"
foreign      "http://cran.us.r-project.org/src/contrib"
fs           "http://cran.us.r-project.org/src/contrib"
future       "http://cran.us.r-project.org/src/contrib"
gdtools      "http://cran.us.r-project.org/src/contrib"
gemini.R     "http://cran.us.r-project.org/src/contrib"
gert         "http://cran.us.r-project.org/src/contrib"
ggmap        "http://cran.us.r-project.org/src/contrib"
ggplot2      "http://cran.us.r-project.org/src/contrib"
httr2        "http://cran.us.r-project.org/src/contrib"
jpeg         "http://cran.us.r-project.org/src/contrib"
knitr        "http://cran.us.r-project.org/src/contrib"
later        "http://cran.us.r-project.org/src/contrib"
lattice      "http://cran.us.r-project.org/src/contrib"
lme4         "http://cran.us.r-project.org/src/contrib"
magick       "http://cran.us.r-project.org/src/contrib"
markdown     "http://cran.us.r-project.org/src/contrib"
Matrix       "http://cran.us.r-project.org/src/contrib"
MatrixModels "http://cran.us.r-project.org/src/contrib"
mgcv         "http://cran.us.r-project.org/src/contrib"
nlme         "http://cran.us.r-project.org/src/contrib"
nloptr       "http://cran.us.r-project.org/src/contrib"
pak          "http://cran.us.r-project.org/src/contrib"
parallelly   "http://cran.us.r-project.org/src/contrib"
pillar       "http://cran.us.r-project.org/src/contrib"
pkgbuild     "http://cran.us.r-project.org/src/contrib"
ps           "http://cran.us.r-project.org/src/contrib"
qpdf         "http://cran.us.r-project.org/src/contrib"
quantmod     "http://cran.us.r-project.org/src/contrib"
quantreg     "http://cran.us.r-project.org/src/contrib"
ragg         "http://cran.us.r-project.org/src/contrib"
raster       "http://cran.us.r-project.org/src/contrib"
RcppTOML     "http://cran.us.r-project.org/src/contrib"
RCurl        "http://cran.us.r-project.org/src/contrib"
Rdpack       "http://cran.us.r-project.org/src/contrib"
readxl       "http://cran.us.r-project.org/src/contrib"
renv         "http://cran.us.r-project.org/src/contrib"
rlang        "http://cran.us.r-project.org/src/contrib"
sass         "http://cran.us.r-project.org/src/contrib"
sf           "http://cran.us.r-project.org/src/contrib"
stringi      "http://cran.us.r-project.org/src/contrib"
summarytools "http://cran.us.r-project.org/src/contrib"
systemfonts  "http://cran.us.r-project.org/src/contrib"
terra        "http://cran.us.r-project.org/src/contrib"
tesseract    "http://cran.us.r-project.org/src/contrib"
textutils    "http://cran.us.r-project.org/src/contrib"
tidygeocoder "http://cran.us.r-project.org/src/contrib"
tzdb         "http://cran.us.r-project.org/src/contrib"
units        "http://cran.us.r-project.org/src/contrib"
V8           "http://cran.us.r-project.org/src/contrib"
websocket    "http://cran.us.r-project.org/src/contrib"
writexl      "http://cran.us.r-project.org/src/contrib"
xfun         "http://cran.us.r-project.org/src/contrib"
zoo          "http://cran.us.r-project.org/src/contrib"

8.9 update all installed package

Update packages which are currently out-of-date. Currently supports CRAN, Bioconductor, other CRAN-like repositories, GitHub, GitLab, Git, and BitBucket.

Code
update.packages(ask = FALSE, checkBuilt = TRUE)

8.10 check package install loaciton

Code
.libPaths()
[1] "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library"

8.11 uninstall pacakge

Code
remove.packages('xxxxx')

9 sleep

The time interval to suspend execution for, in seconds.

Code
Sys.sleep(3)

10 open two R session on Mac

Code
Terminal
open -n /Applications/RStudio.app

11 version control

The renv package helps you create reproducible environments for your R projects

11.1 inital renv and create renv.lock with current loaded pacakge

Code
renv::init()

11.2 show all installed pacakge

Code
library(gt)
installed_pacakge = as.data.frame(installed.packages()[,c(1,3:4)])
installed_pacakge = installed_pacakge[is.na(installed_pacakge$Priority),1:2,drop=FALSE]

11.3 show all installed pacakge and loaded pacakge

Code
library(dplyr)
installed_pacakge = as.data.frame(installed.packages()[,c(1,3:4)])
installed_pacakge = installed_pacakge[is.na(installed_pacakge$Priority),1:2,drop=FALSE]
installed_pacakge |> filter(Package %in% (.packages()))|> gt() |> opt_interactive()

11.4 when using renv and install new pakcage

Code
# it will not work
# library(lubridate)

11.5 install new package with renv::install

Code
renv::install('lubridate')
Code
library(lubridate)

11.6 check current package and renv package

Code
renv::status()

11.7 update lock file

Code
renv::snapshot()

11.8 check status again

Code
renv::status()

11.9 make all current pakcage version back to renv list

Code
renv::restore()

11.10 update all pakcage in renv. recommand do it once a year to keep package updated.

Update packages which are currently out-of-date. Currently supports CRAN, Bioconductor, other CRAN-like repositories, GitHub, GitLab, Git, and BitBucket.

Code
renv::update()

11.11 update renv itself only

Code
renv::upgrade()

11.12 close renv in a project

Code
renv::deactivate()

11.13 re enable renv in a project

Code
renv::activate()

12 reccord code run time

Code
start_time=Sys.time()

for (kk in 1:5) {
    print(kk)
    Sys.sleep(1)
  }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
Code
end_time=Sys.time()
time_used=end_time-start_time
time_used
Time difference of 5.021671 secs

13 stop when code run too long

stop the count down at 1.5 sec

Code
library(R.utils)
foo <- function() {
  print("Tic")
  for (kk in 1:100) {
    print(kk)
    Sys.sleep(0.1)
  }
  print("Tac")
}

withTimeout({
  foo()
}, timeout = 1.5, onTimeout = "warning")
[1] "Tic"
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
NULL

14 check website connection

when connect_result= 2 it means connection is ok

Code
url='www.bing.com'
connect_result=system(paste0('ping -c 1 ',url))
connect_result
[1] 0

when connect_result= 68 it means connection is fail

Code
url='www.bingxxxxx.com'
connect_result=system(paste0('ping -c 1 ',url))
connect_result
[1] 68

15 Using Python

15.1 select python version

check whether python is available

Code
reticulate::py_available()
[1] FALSE

check python version

Code
reticulate::py_config()
python:         /Library/Frameworks/Python.framework/Versions/3.13/bin/python3
libpython:      /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/config-3.13-darwin/libpython3.13.dylib
pythonhome:     /Library/Frameworks/Python.framework/Versions/3.13:/Library/Frameworks/Python.framework/Versions/3.13
version:        3.13.2 (v3.13.2:4f8bb3947cf, Feb  4 2025, 11:51:10) [Clang 15.0.0 (clang-1500.3.9.4)]
numpy:          /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/numpy
numpy_version:  2.1.3

NOTE: Python version was forced by RETICULATE_PYTHON

15.2 select python version

Set up Python:Using python 3.11 instead of 3.13. It need to restart first

Code
Sys.setenv(RETICULATE_PYTHON = "/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11")
library(reticulate)
use_python("/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11")
Code
from platform import python_version
print(python_version())

15.3 run python in R

Code
source_python("flights.py")
Code
sessionInfo()
sessionInfo()
R version 4.4.1 (2024-06-14)
Platform: aarch64-apple-darwin20
Running under: macOS 15.4

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Asia/Bangkok
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] R.utils_2.13.0    R.oo_1.27.0       R.methodsS3_1.8.2 gt_1.0.0         
 [5] janitor_2.2.1     rvest_1.0.4       lubridate_1.9.4   forcats_1.0.0    
 [9] stringr_1.5.1     dplyr_1.1.4       purrr_1.0.4       readr_2.1.5      
[13] tidyr_1.3.1       tibble_3.2.1      ggplot2_3.5.1     tidyverse_2.0.0  

loaded via a namespace (and not attached):
 [1] gtable_0.3.6      xfun_0.51         htmlwidgets_1.6.4 websocket_1.4.2  
 [5] processx_3.8.6    lattice_0.22-6    callr_3.7.6       tzdb_0.4.0       
 [9] vctrs_0.6.5       tools_4.4.1       pak_0.8.0.1       crosstalk_1.2.1  
[13] ps_1.9.0          generics_0.1.3    curl_6.2.2        pkgconfig_2.0.3  
[17] Matrix_1.7-2      lifecycle_1.0.4   compiler_4.4.1    munsell_0.5.1    
[21] chromote_0.5.0    snakecase_0.11.1  htmltools_0.5.8.1 sass_0.4.9       
[25] yaml_2.3.10       later_1.4.1       pillar_1.10.1     tidyselect_1.2.1 
[29] digest_0.6.37     stringi_1.8.4     fastmap_1.2.0     grid_4.4.1       
[33] colorspace_2.1-1  cli_3.6.4         magrittr_2.0.3    utf8_1.2.4       
[37] withr_3.0.2       reactR_0.6.1      scales_1.3.0      promises_1.3.2   
[41] timechange_0.3.0  rmarkdown_2.29    httr_1.4.7        reticulate_1.42.0
[45] png_0.1-8         hms_1.1.3         evaluate_1.0.3    knitr_1.49       
[49] rlang_1.1.5       Rcpp_1.0.14       glue_1.8.0        reactable_0.4.4  
[53] xml2_1.3.8        rstudioapi_0.17.1 jsonlite_2.0.0    R6_2.6.1         
Back to top